package com.supermarket.mapper;

import com.supermarket.entity.ArticleLike;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

@Mapper
public interface ArticleLikeMapper {
    
    /**
     * 添加文章点赞记录
     *
     * @param articleLike 文章点赞对象
     * @return 影响的行数
     */
    int insertArticleLike(ArticleLike articleLike);
    
    /**
     * 更新文章点赞状态
     *
     * @param id 点赞记录ID
     * @param status 状态
     * @return 影响的行数
     */
    int updateArticleLikeStatus(@Param("id") Integer id, @Param("status") String status);
    
    /**
     * 根据文章ID和用户ID查询点赞记录
     *
     * @param articleId 文章ID
     * @param userId 用户ID
     * @return 点赞记录
     */
    ArticleLike selectByArticleAndUser(@Param("articleId") Integer articleId, @Param("userId") Integer userId);
    
    /**
     * 根据文章ID查询有效点赞记录数
     *
     * @param articleId 文章ID
     * @return 点赞数量
     */
    int countActiveByArticleId(@Param("articleId") Integer articleId);
    
    /**
     * 根据用户ID查询有效点赞记录
     *
     * @param userId 用户ID
     * @return 点赞记录列表
     */
    List<ArticleLike> selectActiveByUserId(@Param("userId") Integer userId);
    
    /**
     * 根据文章ID删除所有点赞记录
     *
     * @param articleId 文章ID
     * @return 影响的行数
     */
    int deleteByArticleId(@Param("articleId") Integer articleId);
    
    /**
     * 根据用户ID删除所有点赞记录
     *
     * @param userId 用户ID
     * @return 影响的行数
     */
    int deleteByUserId(@Param("userId") Integer userId);
    
    /**
     * 批量查询用户是否点赞过文章
     *
     * @param userId 用户ID
     * @param articleIds 文章ID列表
     * @return 用户点赞过的文章ID列表
     */
    List<Integer> selectUserLikedArticles(@Param("userId") Integer userId, @Param("articleIds") List<Integer> articleIds);
} 